/*
 *
 *  Copyright (C) 2007-2020 SimplyCore, LLC
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 *
 */

#ifdef _USBD_ENABLE_VHCI_
#include "usbd.h"
ssize_t IIIllIIII(void*,const char __user*,size_t);ssize_t lIIIlIIll(void*,char 
__user*,size_t);long IlIIlIIIl(void*,unsigned int,unsigned long);
#ifdef CONFIG_COMPAT
long lIIlIIlII(void*,unsigned int,unsigned long);
#endif
int llIlllIII(void*,int);int llllIllIl(void*,int);unsigned int llIlIllII(void*,
struct file*,poll_table*lIIllI);int IllIIIllI(struct IIIlll*lllll,struct 
IIlllllIl __user*ioctl);int IIllIlllI(struct IIIlll*lllll,struct IIlIlllII 
__user*ioctl);int lIIllIlII(struct IIIlll*lllll,struct lllllllll __user*ioctl);
static struct IIIllllI lIllIIlll[]={{"\x74\x79\x70\x65","\x76\x62\x75\x73",NULL}
,{NULL,NULL,NULL}};struct IIIlll*IIllIIIll(void){struct IIIlll*lllll;lllll=
IlllIIl(sizeof(*lllll),GFP_KERNEL);if(lllll){mutex_init(&lllll->mutex);lllll->
context=lllll;lllll->IIllll=-(0x9c+9789-0x26d8);lllll->ops.open=llIlllIII;lllll
->ops.release=llllIllIl;lllll->ops.unlocked_ioctl=IlIIlIIIl;
#ifdef CONFIG_COMPAT
lllll->ops.compat_ioctl=lIIlIIlII;
#endif
lllll->ops.read=lIIIlIIll;lllll->ops.write=IIIllIIII;lllll->ops.poll=llIlIllII;
lllll->IIllllIl=lIllIIlll;if(IllllIlI(lllll,(0xb14+6880-0x25f3),
(0x28c+5286-0x1731))<(0x1477+2660-0x1edb)){lIlIll(lllll);lllll=NULL;}}return 
lllll;}void llIIlIIIl(struct IIIlll*lllll){if(lllll){lllIllII(lllll);lIlIll(
lllll);}}ssize_t lIIIlIIll(void*context,char __user*IllIl,size_t llIlI){
ssize_t IlIlI=(0x1e7b+150-0x1f11);IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x72\x65\x61\x64\x3a\x20\x62\x75\x66\x20\x69\x73\x20\x30\x78\x25\x70\x2c\x20\x72\x65\x71\x75\x65\x73\x74\x65\x64\x20\x25\x6c\x75\x20\x62\x79\x74\x65\x73" "\n"
,IllIl,(unsigned long)llIlI);return IlIlI;}ssize_t IIIllIIII(void*context,const 
char __user*IllIl,size_t llIlI){
ssize_t IlIlI=llIlI;IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x77\x72\x69\x74\x65\x3a\x20\x62\x75\x66\x20\x69\x73\x20\x30\x78\x25\x70\x2c\x20\x72\x65\x71\x75\x65\x73\x74\x65\x64\x20\x25\x6c\x75\x20\x62\x79\x74\x65\x73" "\n"
,IllIl,(unsigned long)llIlI);return IlIlI;}long lIIIlIIII(void*context,unsigned 
int lIIIIl,void __user*IlIIII){struct IIIlll*lllll=context;ssize_t IlIlI=
(0x952+3654-0x1798);IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x64\x6f\x5f\x69\x6f\x63\x74\x6c\x3a\x20\x2b\x2b\x20\x63\x6d\x64\x3d\x25\x64\x20\x61\x72\x67\x3d\x30\x78\x25\x70" "\n"
,lIIIIl,IlIIII);switch(lIIIIl){case IlIlIIIll:IlIlI=IllIIIllI(lllll,IlIIII);
break;case llllIIllI:IlIlI=IIllIlllI(lllll,IlIIII);break;case lIllIlIII:IlIlI=
lIIllIlII(lllll,IlIIII);break;default:IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x64\x6f\x5f\x69\x6f\x63\x74\x6c\x3a\x20\x75\x6e\x6b\x6e\x6f\x77\x6e\x20\x69\x6f\x63\x74\x6c" "\n"
);IlIlI=-EINVAL;break;}IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x64\x6f\x5f\x69\x6f\x63\x74\x6c\x3a\x20\x2d\x2d\x20\x72\x65\x73\x75\x6c\x74\x3d\x25\x6c\x75" "\n"
,(unsigned long)IlIlI);return IlIlI;}long IlIIlIIIl(void*context,unsigned int 
lIIIIl,unsigned long IlIIII){IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c" "\n");return 
lIIIlIIII(context,lIIIIl,(void __user*)IlIIII);}
#ifdef CONFIG_COMPAT
long lIIlIIlII(void*context,unsigned int lIIIIl,unsigned long IlIIII){IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x63\x6f\x6d\x70\x61\x74\x5f\x69\x6f\x63\x74\x6c" "\n"
);return lIIIlIIII(context,lIIIIl,compat_ptr(IlIIII));}
#endif


int llIlllIII(void*context,int IIlllII){
IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x6f\x70\x65\x6e\x20\x25\x64" "\n",
IIlllII);return(0x114c+1157-0x15d1);}

int llllIllIl(void*context,int IIlllII){
IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x72\x65\x6c\x65\x61\x73\x65\x20\x25\x64" "\n"
,IIlllII);if(IIlllII==(0x13b1+2182-0x1c37)){
IIIIIlIlI();}return(0x1790+1483-0x1d5b);}unsigned int llIlIllII(void*context,
struct file*lIlllI,poll_table*lIIllI){
return(POLLOUT|POLLWRNORM);}int IllIIIllI(struct IIIlll*lllll,struct IIlllllIl 
__user*ioctl){int IlIlI=(0x95d+3178-0x15c7);struct lIlIIl*lIllI=NULL;lllII IlIll
;IlllIl vid;IlllIl IIllIll;IlllIl Illllll;IlllIl IIIIIIIlI;lIllIl speed;IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c\x5f\x70\x6c\x75\x67\x5f\x64\x65\x76\x69\x63\x65\x3a\x20\x2b\x2b" "\n"
);do
{if(get_user(IlIll,&ioctl->lIIlII.IIlllIl)<(0x80+6419-0x1993)){IlIlI=-EFAULT;
break;}if(IlIll!=sizeof(struct IIlllllIl)){IlIlI=-EINVAL;break;}if(get_user(vid,
&ioctl->lIllllII)<(0x13aa+2353-0x1cdb)){IlIlI=-EFAULT;break;}if(get_user(IIllIll
,&ioctl->IllIIllI)<(0x2222+162-0x22c4)){IlIlI=-EFAULT;break;}if(get_user(Illllll
,&ioctl->IlIIllIl)<(0x979+2429-0x12f6)){IlIlI=-EFAULT;break;}if(get_user(
IIIIIIIlI,&ioctl->IIllIllI)<(0x127+8160-0x2107)){IlIlI=-EFAULT;break;}if(
get_user(speed,&ioctl->llllIllll)<(0xd06+2595-0x1729)){IlIlI=-EFAULT;break;}
switch(speed){case IIIllIIIl:speed=USB_SPEED_LOW;break;case lIIIIIlII:speed=
USB_SPEED_FULL;break;case llIlIIIll:speed=USB_SPEED_HIGH;break;case IIllIlIlI:
#if KERNEL_GT_EQ((0x1368+1373-0x18c3),(0x1410+2930-0x1f7c),(0x190+4228-0x11ed)) \
|| RHEL_RELEASE_GT_EQ((0xb19+938-0xebd),(0xb0a+701-0xdc4)) 
speed=USB_SPEED_SUPER;
#else
IIllIl(
"\x55\x53\x42\x20\x33\x2e\x30\x20\x69\x73\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x20\x6f\x6e\x20\x74\x68\x69\x73\x20\x6b\x65\x72\x6e\x65\x6c\x2c\x20\x75\x73\x65\x20\x6b\x65\x72\x6e\x65\x6c\x20\x32\x2e\x36\x2e\x33\x39\x20\x6f\x72\x20\x6e\x65\x77\x65\x72" "\n"
);IlIlI=-EINVAL;
#endif
break;default:IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c\x5f\x70\x6c\x75\x67\x5f\x64\x65\x76\x69\x63\x65\x3a\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x64\x65\x76\x69\x63\x65\x20\x73\x70\x65\x65\x64" "\n"
);IlIlI=-EINVAL;break;}if(IlIlI<(0x6f2+3756-0x159e)){break;}lIllI=lIlIIlllI(vid,
IIllIll,Illllll,speed);if(lIllI==(0x1899+2548-0x228d)){IlIlI=-ENOMEM;break;}
IlIlI=llIlIlIII(lIllI);if(IlIlI<(0x13a+945-0x4eb)){IlIIllII(lIllI);break;}lIIIl(
"\x64\x65\x76\x69\x63\x65\x69\x64\x3d\x25\x64" "\n",IIIIllII(lIllI->lllll));if(
put_user((lllII)IIIIllII(lIllI->lllll),&ioctl->IIlllIIlI)<(0x1a6f+2531-0x2452)){
IlIIllII(lIllI);IlIlI=-EFAULT;break;}}while((0x5f3+435-0x7a6));if(IlIlI<
(0x484+7488-0x21c4)){if(lIllI){IlIIllII(lIllI);}}IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c\x5f\x70\x6c\x75\x67\x5f\x64\x65\x76\x69\x63\x65\x3a\x20\x2d\x2d\x20\x72\x65\x73\x75\x6c\x74\x3d\x25\x64" "\n"
,IlIlI);return IlIlI;}int IIllIlllI(struct IIIlll*lllll,struct IIlIlllII __user*
ioctl){int IlIlI=(0x474+1881-0xbcd);struct lIlIIl*lIllI;lllII IlIll;lllII 
llIlIlllI;IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c\x5f\x75\x6e\x70\x6c\x75\x67\x5f\x64\x65\x76\x69\x63\x65\x3a\x20\x2b\x2b" "\n"
);do
{if(get_user(IlIll,&ioctl->lIIlII.IIlllIl)<(0x132f+1489-0x1900)){IlIlI=-EFAULT;
break;}if(IlIll!=sizeof(struct IIlIlllII)){IlIlI=-EINVAL;break;}if(get_user(
llIlIlllI,&ioctl->IIlllIIlI)<(0x20e7+283-0x2202)){IlIlI=-EFAULT;break;}lIllI=
IIlIIIIIl(llIlIlllI);if(lIllI==NULL){IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c\x5f\x75\x6e\x70\x6c\x75\x67\x5f\x64\x65\x76\x69\x63\x65\x3a\x20\x64\x65\x76\x69\x63\x65\x20\x25\x75\x20\x69\x73\x20\x6e\x6f\x74\x20\x66\x6f\x75\x6e\x64" "\n"
,llIlIlllI);IlIlI=-ENODEV;break;}

IlIIllII(lIllI);
IlIllIIl(lIllI);}while((0x575+6466-0x1eb7));IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c\x5f\x75\x6e\x70\x6c\x75\x67\x5f\x64\x65\x76\x69\x63\x65\x3a\x20\x2d\x2d\x20\x72\x65\x73\x75\x6c\x74\x3d\x25\x64" "\n"
,IlIlI);return IlIlI;}int lIIllIlII(struct IIIlll*lllll,struct lllllllll __user*
ioctl){int IlIlI=(0xd31+1016-0x1129);lllII IlIll;IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c\x5f\x75\x73\x62\x33\x5f\x73\x75\x70\x70\x6f\x72\x74\x3a\x20\x2b\x2b" "\n"
);do
{if(get_user(IlIll,&ioctl->lIIlII.IIlllIl)<(0x1341+917-0x16d6)){IlIlI=-EFAULT;
break;}if(IlIll!=sizeof(struct lllllllll)){IlIlI=-EINVAL;break;}
#if KERNEL_GT_EQ((0x398+8088-0x232e),(0x743+4032-0x16fd),(0x18f9+460-0x1a9e)) ||\
 RHEL_RELEASE_GT_EQ((0x841+4038-0x1801),(0x2095+750-0x2380))
IlIlI=(0x25f+6341-0x1b24);
#else
IlIlI=-EPIPE;
#endif
}while((0xf2a+113-0xf9b));IlllI(
"\x75\x73\x62\x64\x5f\x76\x62\x75\x73\x5f\x69\x6f\x63\x74\x6c\x5f\x75\x73\x62\x33\x5f\x73\x75\x70\x70\x6f\x72\x74\x3a\x20\x2d\x2d\x20\x72\x65\x73\x75\x6c\x74\x3d\x25\x64" "\n"
,IlIlI);return IlIlI;}
#endif 

